10个关于 Linux Sudo 命令的超有用示例

您所在的位置:网站首页 sudo visudo是什么意思 10个关于 Linux Sudo 命令的超有用示例

10个关于 Linux Sudo 命令的超有用示例

#10个关于 Linux Sudo 命令的超有用示例| 来源: 网络整理| 查看: 265

Linux-sudo-command-tips

sudo (superuser do) 它允许授权用户作为另一个用户执行命令。另一个用户可以是普通用户或超级用户,大多数时候我们使用它来执行具有更高权限的命令。

sudo 命令与安全策略结合使用,默认安全策略是 sudoers,并且可以通过 /etc/sudoers 文件配置。它的安全政策是高度扩展的,可以制定和分发自己的策略作为插件。

和 su 命令有何不同?

在 GNU / Linux 中,可以使用 su 或者 sudo 命令运行提升特权的命令

su (switch user),使用 su 命令,我们可以切换到 root 用户执行命令,但是这种方法有一些缺点。

我们需要与另一个用户共享 root 密码由于根用户是超级用户,我们无法提供受控访问我们无法审计用户正在做什么

sudo 以独特的方式解决了这些问题

不需要泄露 root 用户的密码,普通用户使用自己的密码执行更高权限的命令。可以控制 sudo 用户的访问权限,这意味着我们可以限制用户只执行某些命令。记录了 sudo 用户的所有活动。 允许 sudo 访问

让我们将普通用户添加为 sudo 用户。在我的例子中,用户名是 linuxtechi

编辑 /etc/sudoers 文件 $ sudo visudo 添加以下行以允许 linuxtechi 用户访问 sudo linuxtechi ALL=(ALL) ALL

在上面的命令中:

linuxtechi 表示用户名第一个 ALL 表示运行从任何机器 / 终端访问 sudo第二个 (ALL) 表示 sudo 命令允许以任何用户执行第三个 ALL 表示 sudo 命令可以用 root 身份执行 使用提升的权限执行命令

要以更高的权限执行命令,只需在命令前加上 sudo 字,如下所示

$ sudo cat /etc/passwd

执行该命令时,系统将询问 linuxtechi 的密码,而不是 root 用户的密码。

以另一个用户执行命令

除此之外,我们还可以使用 sudo 作为另一个用户来执行命令。例如,以下命令中,linuxtechi 用户以 devesh 用户执行命令

$ sudo -u devesh whoami [sudo] password for linuxtechi: devesh 内置命令行为

sudo 的局限性之一是 Shell 内置的命令不能与它一起工作。例如,命令中内置了历史记录,如果您尝试使用 sudo 执行此命令,则 not found 错误将报告如下

$ sudo history [sudo] password for linuxtechi: sudo: history: command not found

为了克服上述问题,可以访问 root shell 并从那里执行任何命令,包括 shell 内置的命令。

$ sudo bash

执行此命令后,您将观察到提示符号变为 # 字符。

以 sudo 用户执行先前的命令

假设您想要以更高的权限执行前面的命令,那么下面的技巧将是有用的

$ sudo !4

上面的命令将以更高的权限执行历史记录中的第 4 个命令。

如果您想使用 sudo 命令以 root 权限执行先前命令,则使用以下命令

$ sudo !! sudo 命令与 vim

很多时候,我们编辑系统的配置文件,在保存时,我们意识到我们需要根权限来做这件事。因为这样我们可能会失去我们的变化。没有必要恐慌,我们可以在 Vim 中使用以下命令

:w !sudo tee %

在上面的命令中:

Colon (😃 indicates we are in Vim’s ex modeExclamation (!) mark indicates that we are running shell commandsudo and tee are the shell commandsPercentage (%) sign indicates all lines from current line 使用 sudo 执行多个命令

我们可以使用它执行多个命令,只需使用分号 (😉 分隔命令,如下所示

$ sudo -- bash -c 'pwd; hostname; whoami'

在上面的命令中:

Double hyphen (–) stops processing of command line switchesbash indicates shell name to be used for executionCommands to be executed are followed by –c option 在没有密码的情况下运行 sudo 命令

当第一次执行 sudo 命令时,它将提示输入密码,默认情况下,密码将缓存 15 分钟。但是,我们可以覆盖此行为并使用 NOPASSWD 关键字禁用密码身份验证,如下所示

linuxtechi ALL=(ALL) NOPASSWD: ALL 限制用户执行某些命令

为了提供受控访问,可以限制 sudo 用户只执行某些命令。例如,只允许执行 echo 和 ls 命令

linuxtechi ALL=(ALL) NOPASSWD: /bin/echo /bin/ls 使用 sudo 命令将行或文本字符串附加到文件中

在某些情况下,我们需要在具有 sudo 权限的本地用户的现有文件中追加几行

$ echo ‘text-string’ | sudo tee -a

示例如下所示

pkumar@linuxtechi:~$ echo "deb http://ftp.de.debian.org/debian buster main contrib" | sudo tee -a /etc/apt/sources.list deb http://ftp.de.debian.org/debian buster main contrib pkumar@linuxtechi:~$

也可以使用如下方法

sudo sh -c 'echo "deb http://ftp.de.debian.org/debian buster main contrib" >> /etc/apt/sources.list' 深入了解 sudo

让我们挖掘更多关于 sudo 命令的信息来深入了解它。

$ ls -l /usr/bin/sudo -rwsr-xr-x 1 root root 145040 Jun 13 2017 /usr/bin/sudo

如果仔细观察文件权限,sudo 上的 setuid 位是启用的。当任何用户运行这个二进制文件时,它将使用拥有该文件的用户的特权运行。在本例中,它是 root 用户。

当不使用 sudo 命令执行 id 命令时,会显示 linuxtechi 用户的 id。

$ id uid=1002(linuxtechi) gid=1002(linuxtechi) groups=1002(linuxtechi)

当使用 sudo 命令执行 id 命令时,会显示 root 用户的 id。

$ sudo id uid=0(root) gid=0(root) groups=0(root) 我的开源项目

酷瓜云课堂-在线教育解决方案

course-tencent-cloud(酷瓜云课堂 - gitee仓库)course-tencent-cloud(酷瓜云课堂 - github仓库)


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3